import { userUserStore } from '@/stores/modules/user'
import axios from 'axios'
import router from '@/router/router.js'
import {message} from 'ant-design-vue'

// 使用环境变量中的 baseURL（可以在 .env 文件中设置 VITE_APP_BASE_URL）
// const baseURL = import.meta.env.VITE_APP_BASE_URL || 'http://big-event-vue-api-t.itheima.net'

const instance = axios.create({
    baseURL: '/api',
    timeout: 10000 // 设置适当的超时时间
})

// 请求拦截器：在每个请求前加上 token
instance.interceptors.request.use(
    (config) => {
        const userStore = userUserStore()
        if (userStore.token) {
            config.headers.Authorization = `${userStore.token}` // 添加 token
        }
        return config
    },
    (err) => Promise.reject(err) // 直接返回错误
)

// 响应拦截器：统一处理响应中的错误信息
instance.interceptors.response.use(
    (res) => {
        // 统一处理成功响应
        return res
    },
    (err) => {
        // 处理 401 错误（未授权或 token 失效）
        if (err.response?.status === 401) {
            const userStore = userUserStore()
            userStore.removeToken() // 清除本地 token
            userStore.removeUserInfo() // 清空用户信息
            router.push('/login') // 重定向到登录页
            return message.error('登录已过期，请重新登录')
        }
        return Promise.reject(err) // 拒绝并传递 HTTP 错误

        // 通用错误处理
        const errorMessage = err.response?.data?.message || '服务异常'
        message.error(errorMessage)

    }
)

export default instance